home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / net / bind-contrib.tar.gz / bind-contrib.tar / contrib / host / rrec.h < prev    next >
Text File  |  1996-11-10  |  8KB  |  305 lines

  1. /*
  2. ** Resource record structures.
  3. **
  4. **    These define the various resource record fields after decoding
  5. **    from the internal representation in the nameserver answer buffer.
  6. **
  7. **    @(#)rrec.h              e07@nikhef.nl (Eric Wassenaar) 961010
  8. */
  9.  
  10. #define MAXSTRING 255        /* maximum size of single encoded string */
  11. #define MAXSTRLEN MAXDLEN    /* maximum size of multiple substrings */
  12.  
  13. typedef struct rr_data {
  14.     u_char databuf[MAXDLEN];    /* generic data buffer */
  15. } rr_data_t;
  16.  
  17. /*
  18. ** Record-specific data fields, traditional records.
  19. */
  20.  
  21. typedef struct a_data {
  22.     ipaddr_t address;        /* internet address of host */
  23. } a_data_t;
  24.  
  25. typedef struct ns_data {
  26.     char nameserver[MAXDNAME+1];    /* name of domain nameserver */
  27. } ns_data_t;
  28.  
  29. typedef struct md_data {
  30.     char destination[MAXDNAME+1];    /* name of mail destination */
  31. } md_data_t;
  32.  
  33. typedef struct mf_data {
  34.     char forwarder[MAXDNAME+1];    /* name of mail forwarder */
  35. } mf_data_t;
  36.  
  37. typedef struct cname_data {
  38.     char canonical[MAXDNAME+1];    /* canonical domain name */
  39. } cname_data_t;
  40.  
  41. typedef struct soa_data {
  42.     char primary[MAXDNAME+1];    /* name of primary nameserver */
  43.     char hostmaster[MAXDNAME+1];    /* name of hostmaster mailbox */
  44.     int serial;            /* serial (version) number */
  45.     int refresh;            /* refresh time in seconds */
  46.     int retry;            /* refresh retry time in seconds */
  47.     int expire;            /* expiration time in seconds */
  48.     int defttl;            /* default time_to_live */
  49. } soa_data_t;
  50.  
  51. typedef struct mb_data {
  52.     char mailhost[MAXDNAME+1];    /* name of mailbox host */
  53. } mb_data_t;
  54.  
  55. typedef struct mg_data {
  56.     char memberbox[MAXDNAME+1];    /* mailbox of mail group member */
  57. } mg_data_t;
  58.  
  59. typedef struct mr_data {
  60.     char aliasbox[MAXDNAME+1];    /* mailbox of mail alias */
  61. } mr_data_t;
  62.  
  63. typedef struct null_data {
  64.     u_char nullbuf[MAXDLEN];    /* generic data buffer */
  65. } null_data_t;
  66.  
  67. typedef struct wks_data {
  68.     ipaddr_t servaddress;        /* internet address of host */
  69.     int protocol;            /* protocol number */
  70.     u_char services[32];        /* ports 0-255 */
  71. } wks_data_t;
  72.  
  73. typedef struct ptr_data {
  74.     char domain[MAXDNAME+1];    /* domain name of pointer */
  75. } ptr_data_t;
  76.  
  77. typedef struct hinfo_data {
  78.     char cputype[MAXSTRING+1];    /* machine description */
  79.     char ostype[MAXSTRING+1];    /* operating system type */
  80. } hinfo_data_t;
  81.  
  82. typedef struct minfo_data {
  83.     char ownerbox[MAXDNAME+1];    /* name of owner mailbox */
  84.     char errorbox[MAXDNAME+1];    /* name of error mailbox */
  85. } minfo_data_t;
  86.  
  87. typedef struct mx_data {
  88.     int preference;            /* preference value */
  89.     char mxhost[MAXDNAME+1];    /* name of mx host */
  90. } mx_data_t;
  91.  
  92. typedef struct txt_data {
  93.     char text[MAXSTRLEN+1];        /* multiple substrings */
  94. } txt_data_t;
  95.  
  96. /*
  97. ** Record-specific data fields, later additions.
  98. */
  99.  
  100. typedef struct rp_data {
  101.     char mailbox[MAXDNAME+1];    /* name of person mailbox */
  102.     char txtinfo[MAXDNAME+1];    /* name of description txt record */
  103. } rp_data_t;
  104.  
  105. typedef struct afsdb_data {
  106.     int afstype;            /* type of afs server */
  107.     char afshost[MAXDNAME+1];    /* name of afs server */
  108. } afsdb_data_t;
  109.  
  110. typedef struct x25_data {
  111.     char psdnaddress[MAXSTRING+1];    /* x25 psdn address */
  112. } x25_data_t;
  113.  
  114. typedef struct isdn_data {
  115.     char isdnaddress[MAXSTRING+1];    /* isdn address */
  116.     char isdnsubaddr[MAXSTRING+1];    /* isdn subaddress */
  117. } isdn_data_t;
  118.  
  119. typedef struct rt_data {
  120.     int routepref;            /* preference value */
  121.     char routehost[MAXDNAME+1];    /* name of route-through host */
  122. } rt_data_t;
  123.  
  124. typedef struct nsap_data {
  125.     u_char nsapaddr[MAXNSAP];    /* binary nsap address */
  126. } nsap_data_t;
  127.  
  128. typedef struct nsapptr_data {
  129.     char nsapdomain[MAXDNAME+1];    /* domain name of nsap pointer */
  130. } nsapptr_data_t;
  131.  
  132. typedef struct sig_data {
  133.     int sigtype;            /* resource record type covered */
  134.     int algorithm;            /* signature encoding algorithm */
  135.     int nlabels;            /* number of labels in SIG name */
  136.     int sigttl;            /* original ttl of SIG record */
  137.     time_t expiretime;        /* signature expiration time */
  138.     time_t sigtime;            /* time signature was signed */
  139.     int footprint;            /* key identification */
  140.     char signer[MAXDNAME+1];    /* signer's domain name */
  141.     u_char sig[MAXMD5SIZE];        /* encoded signature */
  142. } sig_data_t;
  143.  
  144. typedef struct key_data {
  145.     int keyflags;            /* key description flags */
  146.     int protocol;            /* protocol suite */
  147.     int algorithm;            /* key encoding algorithm */
  148.     u_char key[MAXMD5SIZE];        /* encoded key */
  149. } key_data_t;
  150.  
  151. typedef struct px_data {
  152.     int mappref;            /* preference value */
  153.     char map822[MAXDNAME+1];    /* rfc822 domain name */
  154.     char mapx400[MAXDNAME+1];    /* x400 domain name */
  155. } px_data_t;
  156.  
  157. typedef struct gpos_data {
  158.     char longpos[MAXSTRING+1];    /* geographical longitude */
  159.     char latpos[MAXSTRING+1];    /* geographical latitude */
  160.     char altpos[MAXSTRING+1];    /* geographical altitude */
  161. } gpos_data_t;
  162.  
  163. typedef struct aaaa_data {
  164.     u_char ipngaddr[IPNGSIZE];    /* binary ip v6 address */
  165. } aaaa_data_t;
  166.  
  167. typedef struct loc_data {
  168.     int locversion;            /* version number */
  169.     int objectsize;            /* size of object */
  170.     int hprecision;            /* horizontal precision */
  171.     int vprecision;            /* vertical precision */
  172.     int longitude;            /* geographical longitude */
  173.     int latitude;            /* geographical latitude */
  174.     int altitude;            /* geographical altitude */
  175. } loc_data_t;
  176.  
  177. typedef struct nxt_data {
  178.     char nxtdomain[MAXDNAME+1];    /* name of next domain in order */
  179.     u_char typemap[32];        /* types 0-255 */
  180. } nxt_data_t;
  181.  
  182. typedef struct srv_data {
  183.     int srvpref;            /* preference value */
  184.     int srvweight;            /* load balancing weight */
  185.     int srvport;            /* port of service */
  186.     char srvhost[MAXDNAME+1];    /* name of service host */
  187. } srv_data_t;
  188.  
  189. typedef struct naptr_data {
  190.     int naorder;
  191.     int napref;            /* preference value */
  192.     char naflags[MAXSTRING+1];    /* flags */
  193.     char naservice[MAXSTRING+1];
  194.     char naregexp[MAXSTRING+1];
  195.     char nahost[MAXDNAME+1];    /* name of naming authority host */
  196. } naptr_data_t;
  197.  
  198. /*
  199. ** Record-specific data fields, nonstandard types.
  200. */
  201.  
  202. typedef struct uinfo_data {
  203.     char userinfo[MAXSTRLEN+1];    /* user description */
  204. } uinfo_data_t;
  205.  
  206. typedef struct uid_data {
  207.     int userid;            /* user uid */
  208. } uid_data_t;
  209.  
  210. typedef struct gid_data {
  211.     int groupid;            /* user gid */
  212. } gid_data_t;
  213.  
  214. typedef struct unspec_data {
  215.     u_char unspecbuf[MAXDLEN];    /* generic data buffer */
  216. } unspec_data_t;
  217.  
  218. /*
  219. ** Generic resource record description.
  220. */
  221.  
  222. typedef struct rrecord {
  223.     char    name[MAXDNAME+1];    /* resource record name */
  224.     int    type;            /* resource record type */
  225.     int    class;            /* resource record class */
  226.     int    ttl;            /* time_to_live value */
  227.     union {
  228.         rr_data_t    data_rr;
  229.         a_data_t    data_a;
  230.         ns_data_t    data_ns;
  231.         md_data_t    data_md;
  232.         mf_data_t    data_mf;
  233.         cname_data_t    data_cname;
  234.         soa_data_t    data_soa;
  235.         mb_data_t    data_mb;
  236.         mg_data_t    data_mg;
  237.         mr_data_t    data_mr;
  238.         null_data_t    data_null;
  239.         wks_data_t    data_wks;
  240.         ptr_data_t    data_ptr;
  241.         hinfo_data_t    data_hinfo;
  242.         minfo_data_t    data_minfo;
  243.         mx_data_t    data_mx;
  244.         txt_data_t    data_txt;
  245.         rp_data_t    data_rp;
  246.         afsdb_data_t    data_afsdb;
  247.         x25_data_t    data_x25;
  248.         isdn_data_t    data_isdn;
  249.         rt_data_t    data_rt;
  250.         nsap_data_t    data_nsap;
  251.         nsapptr_data_t    data_nsapptr;
  252.         sig_data_t    data_sig;
  253.         key_data_t    data_key;
  254.         px_data_t    data_px;
  255.         gpos_data_t    data_gpos;
  256.         aaaa_data_t    data_aaaa;
  257.         loc_data_t    data_loc;
  258.         nxt_data_t    data_nxt;
  259.         srv_data_t    data_srv;
  260.         naptr_data_t    data_naptr;
  261.         uinfo_data_t    data_uinfo;
  262.         uid_data_t    data_uid;
  263.         gid_data_t    data_gid;
  264.         unspec_data_t    data_unspec;
  265.     } data;
  266. } rrecord_t;
  267.  
  268. #define t_rr        data.data_rr
  269. #define t_a        data.data_a
  270. #define t_ns        data.data_ns
  271. #define t_md        data.data_md
  272. #define t_mf        data.data_mf
  273. #define t_cname        data.data_cname
  274. #define t_soa        data.data_soa
  275. #define t_mb        data.data_mb
  276. #define t_mg        data.data_mg
  277. #define t_mr        data.data_mr
  278. #define t_null        data.data_null
  279. #define t_wks        data.data_wks
  280. #define t_ptr        data.data_ptr
  281. #define t_hinfo        data.data_hinfo
  282. #define t_minfo        data.data_minfo
  283. #define t_mx        data.data_mx
  284. #define t_txt        data.data_txt
  285. #define t_rp        data.data_rp
  286. #define t_afsdb        data.data_afsdb
  287. #define t_x25        data.data_x25
  288. #define t_isdn        data.data_isdn
  289. #define t_rt        data.data_rt
  290. #define t_nsap        data.data_nsap
  291. #define t_nsapptr    data.data_nsapptr
  292. #define t_sig        data.data_sig
  293. #define t_key        data.data_key
  294. #define t_px        data.data_px
  295. #define t_gpos        data.data_gpos
  296. #define t_aaaa        data.data_aaaa
  297. #define t_loc        data.data_loc
  298. #define t_nxt        data.data_nxt
  299. #define t_srv        data.data_srv
  300. #define t_naptr        data.data_naptr
  301. #define t_uinfo        data.data_uinfo
  302. #define t_uid        data.data_uid
  303. #define t_gid        data.data_gid
  304. #define t_unspec    data.data_unspec
  305.